var A=Object.defineProperty;var F=(l,a,e)=>a in l?A(l,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[a]=e;var s=(l,a,e)=>(F(l,typeof a!="symbol"?a+"":a,e),e);var y=(l,a,e)=>new Promise((c,r)=>{var o=n=>{try{m(e.next(n))}catch(t){r(t)}},D=n=>{try{m(e.throw(n))}catch(t){r(t)}},m=n=>n.done?c(n.value):Promise.resolve(n.value).then(o,D);m((e=e.apply(l,a)).next())});import{GloComm as E}from"./GloComm-98065291.js";import{MapAttr as B}from"./MapAttr-b9cf931d.js";import{SFTables as b,SFTable as N}from"./SFTable-39daafd0.js";import{SysEnumMain as G}from"./SysEnumMain-c3e51a4c.js";import{fc as M,eX as _,eZ as u,ad as S,bL as I}from"./index-68beeb37.js";import"./FrmTrack-e5ed3376.js";import"./Events-141c34ea.js";import"./SFDBSrc-b5a81cac.js";import"./BSEntity-04e1e554.js";import"./SysEnum-6cbfb178.js";const T=class extends M{constructor(){super("GPN_NewDDL");s(this,"HelpAdminEnum",`
  #### 帮助
  - 枚举库维护, 进入枚举库后，在工具栏点击新建按钮.
  
  `);s(this,"HelpDBSrc",`
  #### 帮助
  - 数据源分为关系数据库类型的数据源与web服务的数据源.
  - 首先需要维护数据源，然后在数据源上创建字典.

  `);s(this,"HelpDict",`
  #### 帮助
  - 字典表管理,在数据源上创建字典表.
  - 如果没有数据源，请首先创建数据源.
  `);s(this,"Blank",`
  #### 帮助
  - 空白的字段: 用于加载表单的时候，他的数据源是通过，由参数的字典获得的.
  - 比如：表单里由，片区、省份、地市、区县四个下拉框字段. 当表单加载的时候，在没有确定片区其他的三个字段都无法确定值。
  - 省份、地区、区县就需要绑定空白数据源外键.
  - 使用级联关系，把其他的字段数据实现数据级联查询.
  `);s(this,"Docs1",`
  #### 帮助 
  - 待完善.
  `);s(this,"SelectedDict_Name",`
  #### 帮助
  - 请输入要生成的字段名, 格式:英文字母开头下划线数字.
  - 该名称将会是数据库的真实字段.
  `);s(this,"SelectedDict",`
  #### 帮助
  - 请选择一个外键字典表，如果没有请在左侧创建一个字典表.
  - 创建外键字段,必须选定外键的字典表.
  - 列出来的都是无参数的字典.

  #### 关于外键字典表
  - 具有编码，名称数据我们称为字典表，比如：片区、省份、税种、税目、部门.
  - 创建外键字典表必须依托一个数据源.
  - 从其他系统获得的数据, 
  - 外键字典表可以链接到

  #### 字典数据来源类型
  - SQL语句：从关系数据库中获得来的.
  - WebApi: 通过web服务获得.
  - Javascript: 通过脚本的function方法获得.
  - ccform内置的数据维护,维护在ccbpm系统中的字典.

  #### 两种格式数据格式
  - 编号名称格式: 比如片区、省份.
  - 树结构模式: 比如部门、产品目录树.
  #### 数据源的类型
  - 关系数据库
  - web服务.

  `);s(this,"NewStrEnum",`
  #### 帮助
   - 填写格式: 枚举值=枚举标签; 
   - 例如: ty=团员,dy=党员,qz=群众
   - 系统解析为: ty是团员, dy是党员, qz是群众.

  #### 数据存储.
   - string类型的枚举也称为标记枚举,字母存储一个列,标签存储一个列.
   - 在表单里字段是abc,那系统就会自动创建一个影子字段 abcT.
   - abc字段存储的是标记, abcT存储的是标签.
   - 这一点与外部数据源存储一致.
    `);s(this,"NewIntEnum",`
  #### 帮助
   - 填写格式1: 团员,党员,群众
   - 系统解析为: 0是团员， 1是党员，2是群众.
   - 填写格式2: @0=团员@1=党员@2=群众
   - 系统解析为: 10是团员， 20是党员，30是群众，这样就可以自己定义枚举值.
  #### 数据存储
   - int类型的枚举值是常用的数据类型，ccfrom是格式化的存储到数据表里.
   - 创建一个int类型的字段，用于存储枚举的数据.
    `);s(this,"Docs2",`

  #### 帮助
   - 依托富文本编辑器,实现对表单的编辑.
   - 优点:格式灵活,展现效果随心所欲.
   - 缺点:业务人员入手需要一定的学习成本.
   - 适用于:效果
    
  `);this.PageTitle="新建枚举/外键字段"}Init(){this.AddGroup("A","枚举字段");const e=_.SQLEnumMain;this.SelectItemsByList("SelectedEnum","新建枚举字段",T.SelectedEnum,!1,e),this.TextBox1_Name("SelectedEnum.FieldName","输入字段ID",this.SelectedDict_Name,"字段ID",()=>this.RequestVal("tb1","SelectedEnum"),"英文字母或者下划线开头."),this.AddBlank("AdminEnum","枚举库维护",this.HelpAdminEnum),this.AddGroup("B","外键字段");const c=" SELECT No, Name, DBSrcType as GroupNo FROM Sys_SFTable WHERE IsPara=0 AND No!='Blank' ";this.SelectItemsByList("SelectedDict","新建外键字段",this.SelectedDict,!1,c),this.TextBox1_Name("SelectedDict.Name","输入字段ID",this.SelectedDict_Name,"字段ID",()=>this.RequestVal("tb1","SelectedDict"),"英文字母或者下划线开头."),this.TextBox2_NameNo("Blank","无数据源下拉框",this.Blank,"FK_","字段英文名","字段中文名",""),this.AddBlank("AdminDict","字典库维护",this.HelpDict),this.AddBlank("AdminDBSrc","数据源维护",this.HelpDBSrc)}GenerSorts(){return y(this,null,function*(){return Promise.resolve([])})}Save_TextBox_X(e,c,r,o,D){return y(this,null,function*(){if(e!="SelectedEnum"){if(e=="Blank")return yield b.Init_Blank(),this.InitDDL(o,r,"Blank");if(e==="AdminEnum.ToUrl"||e==="AdminEnum")return new u(S.GoToUrl,E.UrlSearch("TS.FrmUI.SysEnumMain"));if(e==="AdminDict.ToUrl"||e==="AdminDict")return new u(S.GoToUrl,E.UrlSearch("TS.FrmUI.SFTable"));if(e==="AdminDBSrc")return new u(S.GoToUrl,E.UrlSearch("TS.Sys.SFDBSrc"));if(e==="SelectedEnum.FieldName"){const m=this.RequestVal("FrmID"),n=this.RequestVal("GroupField"),t=this.RequestVal("CtrlType");if(!r)return;const h=this.RequestVal("tb1","SelectedEnum"),w=this.RequestVal("tb2","SelectedEnum"),d=new G(h);d.No=h,yield d.Retrieve(),d.EnumKey===""&&(d.EnumKey=r);const i=new B;if(i.MyPK=m+"_"+r,yield i.IsExits())return new u(S.Error,"字段在表单已经存在"+r);i.Name=w,i.KeyOfEn=r,i.FK_MapData=m,i.UIVisible=1,i.UIIsEnable=1,i.GroupID=n,i.LGType=1,i.MyDataType=2,i.SetPara("RBShowModel",3),i.UIContralType=parseInt(t)||I.DDL,i.UIBindKey=d.EnumKey,yield i.Insert();const U="/@/WF/Comm/En.vue?EnName=TS.FrmUI.MapAttrEnum&PKVal="+i.MyPK;return new u(S.GoToUrl,U)}if(e==="SelectedDict.Name"){const m=this.RequestVal("tb1","SelectedDict");return this.InitDDL(r,"",m)}}})}InitDDL(e,c,r){return y(this,null,function*(){const o=this.RequestVal("FrmID"),D=this.RequestVal("GroupField");if(!e)return;const n=new N(r);n.No=r,yield n.Retrieve();const t=new B;if(t.MyPK=o+"_"+e,(yield t.IsExits())==!0)return new u(S.Error,"字段在表单已经存在"+e);c?t.Name=c:t.Name=n.Name,t.KeyOfEn=e,t.FK_MapData=o,t.UIVisible=1,t.UIIsEnable=1,t.GroupID=D,t.LGType=0,t.MyDataType=1,t.UIContralType=I.DDL,t.UIBindKey=n.No,t.SetPara("SrcType",n.DBSrcType),yield t.Insert(),t.UIVisible=0,t.MyPK=o+"_"+e+"T",t.KeyOfEn=e+"T",t.UIContralType=I.TB,yield t.Insert();const f="/@/WF/Comm/En.vue?EnName=TS.FrmUI.MapAttrSFSQL&PKVal="+t.MyPK;return new u(S.GoToUrl,f)})}};let p=T;s(p,"SelectedEnum",`
  #### 帮助 
   - 选择枚举库的枚举.
   - 如果没有该数据，请点击枚举库管理，新建枚举.
  #### 定义.
   - 枚举分为int类型的枚举与string类型的枚举.
   - Int类型的枚举:政治面貌, 0=群众1=团员,2=党员.
   - String类型的枚举:政治面貌, qz=群众 ty=团员, dy=党员 .
   - 格式为(Item用逗号分开): 事假,病假,婚假,其它

  #### 枚举的存储
   - 枚举主表: Sys_EnumMain 
   - 枚举从表: Sys_Enum
  `);export{p as GPN_NewDDL};
